package com.example.wxordersystem.web;

import com.example.wxordersystem.entity.ProductCategory;
import com.example.wxordersystem.entity.ProductInfo;
import com.example.wxordersystem.service.CategoryService;
import com.example.wxordersystem.service.ProductService;
import com.example.wxordersystem.utils.ResultVOUtil;
import com.example.wxordersystem.vo.ProductInfoVO;
import com.example.wxordersystem.vo.ProductVO;
import com.example.wxordersystem.vo.ResultVO;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.ArrayList;
import java.util.List;

/**
 * @author 常红伟
 */

@RestController
@RequestMapping("/buyer/product")
public class BuyerProductController {

    @Autowired
    ProductService productService;

    @Autowired
    CategoryService categoryService;

    @GetMapping("/list")
    public ResultVO list(){

        //1.查到所有的上架商品
        List<ProductInfo> productList=productService.findUpAll();

        //2.查询所有类目
        List <ProductCategory> categoryList=categoryService.findAll();

        //3.拼接数据
        //类目集合
        List<ProductVO> productVOList = new ArrayList<>();
        //循环给类目对象添加数据
        for(ProductCategory productCategory:categoryList){
            //VO类目对象
            ProductVO productVO = new ProductVO();
            //类目的name
            productVO.setCategoryName(productCategory.getCategoryName());
            //类目的type
            productVO.setCategoryType(productCategory.getCategoryType());
            //用于存放商品对象的集合
            List<ProductInfoVO> productInfoVOList = new ArrayList<>();
            //遍历每个商品
            for(ProductInfo productInfo:productList){
                if (productInfo.getCategoryType().equals(productCategory.getCategoryType())){
                    //用于存放商品的对象
                    ProductInfoVO productInfoVO = new ProductInfoVO();
                    BeanUtils.copyProperties(productInfo,productInfoVO);
                    //将商品对象添加到商品集合中
                    productInfoVOList.add(productInfoVO);
                }
            }
            //给类目的foods赋值，值为一个商品集合
            productVO.setProductInfoVOList(productInfoVOList);
            productVOList.add(productVO);
        }
        //调用外层工具类查传入类目集合，表示查询成功
        return ResultVOUtil.success(productVOList);
    }
}
